# Actividad Central invocada por el entorno Sugar
# autor: Ing. Fernando Mancia, Ing. Emiliano Gonzalez

from gettext import gettext as _

import pygame 
from pygame.locals import *

import sys
import os
from sugar.activity import activity
from sugar.datastore import datastore
from sugar.presence import presenceservice
import logging 
import gtk

from P1_registro import P1_registro
from P2_bienvenida import P2_bienvenida
from sync import sync

from dao.AlumnosDao import AlumnosDao
from dao.Alumnos_LeccionesDao import Alumnos_LeccionesDao
from model.Alumnos import Alumnos
from model.Alumnos_Lecciones import Alumnos_Lecciones

 
import sugar.graphics.toolbutton
sys.path.append('..') # Import sugargame package from top directory.
import sugargame.canvas

import AemaJuego
# Constantes
WIDTH = 800
HEIGHT = 600

class MedioAmbiente(activity.Activity):
	alumno = None
	daoAlumnos = None
	daoAlumnos_Lecciones = None
	
	def __init__(self, handle):
		self.handle = handle
		self.daoAlumnos = AlumnosDao()
		self.daoAlumnos_Lecciones = Alumnos_LeccionesDao()
		self.ws = sync()

		self.GLADE_P1_REGISTRO   = 'templateGui/p1_registro.glade'
		self.GLADE_P2_BIENVENIDA = 'templateGui/p2_bienvenida.glade'
                self.inicio_normal(handle)

     
        def inicio_normal(self, handle): 
		if (self.daoAlumnos.existeAlumnoXo() == True):
			## Actualizamos los datos del alumno desde el server
			rsinc = self.ws.sincronizar()
			print "Sincronizar = "+ str(rsinc)

			#Obtenemos el alumno que debe estar registrado
			self.alumno = self.daoAlumnos.obtener()

			## Desplegar pantalla de Bienvenida
			super(MedioAmbiente, self).__init__(handle)
			self.cargarP2_bienvenida(handle)
		else:
			## Obtener Escuelas disponibles
			self.ws.obtenerEscuelas()

			## Pantalla de Registro del alumno en XO
			self.cargarP1_registro(handle)
     

        def sincronizar(self, widget):
		s = sync()
		res = s.sincronizar()
                return res 


	def cargarP1_registro(self, handle):
		activity.Activity.__init__(self, handle)
		self._name = handle
		self.handle = handle

		self.set_title('AEMA')
		toolbox = activity.ActivityToolbox(self)
		self.set_toolbox(toolbox)
		toolbox.show()

		# Contenedor, se crea con el que provee gtk
		self._main_view = gtk.VBox()
		self.gtktest = P1_registro(True, self )

		# Se remueve el padre del widget
		if self.gtktest.widget.parent:
			self.gtktest.widget.parent.remove(self.gtktest.widget)
 
		# Se le dice q su padre es ahora la ventanita de sugar
		self._main_view.pack_start(self.gtktest.widget)

		# Mostrar todo
		self.gtktest.widget.show()
		self._main_view.show()
		self.set_canvas(self._main_view)
		self.show_all()


	def cargarP2_bienvenida(self, handle):
           #Obtenemos el alumno que debe estar registrado
           self.alumno = self.daoAlumnos.obtener()

	   #super(MedioAmbiente, self).__init__(handle)
	   
	   self.paused = False

	   # Create the game instance.
	   self.game = AemaJuego.AemaJuego()

	   # Build the activity toolbar.
	   self.build_toolbar()

	   # Build the Pygame canvas.
	   self._canvas = sugargame.canvas.PygameCanvas(self)
	   # Note that set_canvas implicitly calls read_file when resuming from the Journal.
	   self.set_canvas(self._canvas)
	   
	   self._canvas.grab_focus()

	   # Start the game running.
	   self._canvas.run_pygame(self.game.run)
	   
	def build_toolbar(self):        
	   stop_play = sugar.graphics.toolbutton.ToolButton('media-playback-stop')
	   stop_play.set_tooltip(_("Stop"))
	   stop_play.set_accelerator(_('<ctrl>space'))
	   stop_play.connect('clicked', self._stop_play_cb)

	   toolbar = gtk.Toolbar()
	   toolbar.insert(stop_play, 0)
	   toolbar.insert(gtk.SeparatorToolItem(), 1)
	   
	   toolbox = sugar.activity.activity.ActivityToolbox(self)
	   toolbox.add_toolbar(_("Agencia Secreta, Investigador = " + self.alumno.nombre ), toolbar)
	   
	   toolbox.show_all()
	   self.set_toolbox(toolbox)

	def _stop_play_cb(self, button):
	   # Pause or unpause the game.
	   self.paused = not self.paused
	   self.game.set_paused(self.paused)
	   
	   # Update the button to show the next action.
	   if self.paused:
		   button.set_icon('media-playback-start')
		   button.set_tooltip(_("Start"))
	   else:
		   button.set_icon('media-playback-stop')
		   button.set_tooltip(_("Stop"))


